
import { CHANGE_INPUT_VALUE, CHANGE_LIST_VALUE, DELETE_LIST_VALUE } from './actionTypes'


const defaultState = {
    inputValue: '',
    list: [],
};

// reducer 可以接收state,但是不能修改state
// 纯函数 给定固定的输入，就一定有固定的输出（即输入一定输出也是一定的），而且不会有任何的副作用
export default (state = defaultState, action) => {
    if (action.type === CHANGE_INPUT_VALUE) {
        const newState = JSON.parse(JSON.stringify(state)); // 深拷贝
        newState.inputValue = action.value;
        return newState;
    };
    if (action.type === CHANGE_LIST_VALUE) {
        const newState = JSON.parse(JSON.stringify(state));
        newState.list.push(action.value);
        newState.inputValue = '';
        return newState;
    };
    if (action.type === DELETE_LIST_VALUE) {
        const newState = JSON.parse(JSON.stringify(state));
        newState.list.splice(action.index, 1);
        return newState;
    }
    return state;
}